<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>PowerVR SDK</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
<table width="100%">
  <tr>
    <td width="33%">
      <p align="left">&nbsp;<a href="http://www.imgtec.com"><img border="0" src="IMGLogo.jpg" width="200" height="30"></a></p>
    </td>
    <td width="33%">
      <p align="center"><font color="#808080" face="Arial" size="2">PowerVR Software Development Kit</a></font></p>
    </td>
    <td width="34%">
      <p align="right"><a href="http://www.powervr.com"><img border="0" src="PVRlogo.jpg" width="200" height="27"></a></p>
    </td>
  </tr>
</table>
<hr>
</head><body>
<!-- Generated by Doxygen 1.3.6 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>PVRTMatrix.h</h1><a href="PVRTMatrix_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/******************************************************************************</span>
00002 <span class="comment"></span>
00003 <span class="comment"> @File         PVRTMatrix.h</span>
00004 <span class="comment"></span>
00005 <span class="comment"> @Title        PVRTMatrix</span>
00006 <span class="comment"></span>
00007 <span class="comment"> @Version      </span>
00008 <span class="comment"></span>
00009 <span class="comment"> @Copyright    Copyright (C)  Imagination Technologies Limited.</span>
00010 <span class="comment"></span>
00011 <span class="comment"> @Platform     ANSI compatible</span>
00012 <span class="comment"></span>
00013 <span class="comment"> @Description  Vector and Matrix functions for floating and fixed point math. The</span>
00014 <span class="comment">               general matrix format used is directly compatible with, for</span>
00015 <span class="comment">               example, both DirectX and OpenGL.</span>
00016 <span class="comment"></span>
00017 <span class="comment">******************************************************************************/</span>
00018 <span class="preprocessor">#ifndef _PVRTMATRIX_H_</span>
00019 <span class="preprocessor"></span><span class="preprocessor">#define _PVRTMATRIX_H_</span>
00020 <span class="preprocessor"></span>
00021 <span class="preprocessor">#include "<a class="code" href="PVRTGlobal_8h.html">PVRTGlobal.h</a>"</span>
00022 <span class="comment">/****************************************************************************</span>
00023 <span class="comment">** Defines</span>
00024 <span class="comment">****************************************************************************/</span>
<a name="l00025"></a><a class="code" href="PVRTMatrix_8h.html#a0">00025</a> <span class="preprocessor">#define MAT00 0</span>
<a name="l00026"></a><a class="code" href="PVRTMatrix_8h.html#a1">00026</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT01 1</span>
<a name="l00027"></a><a class="code" href="PVRTMatrix_8h.html#a2">00027</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT02 2</span>
<a name="l00028"></a><a class="code" href="PVRTMatrix_8h.html#a3">00028</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT03 3</span>
<a name="l00029"></a><a class="code" href="PVRTMatrix_8h.html#a4">00029</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT10 4</span>
<a name="l00030"></a><a class="code" href="PVRTMatrix_8h.html#a5">00030</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT11 5</span>
<a name="l00031"></a><a class="code" href="PVRTMatrix_8h.html#a6">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT12 6</span>
<a name="l00032"></a><a class="code" href="PVRTMatrix_8h.html#a7">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT13 7</span>
<a name="l00033"></a><a class="code" href="PVRTMatrix_8h.html#a8">00033</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT20 8</span>
<a name="l00034"></a><a class="code" href="PVRTMatrix_8h.html#a9">00034</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT21 9</span>
<a name="l00035"></a><a class="code" href="PVRTMatrix_8h.html#a10">00035</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT22 10</span>
<a name="l00036"></a><a class="code" href="PVRTMatrix_8h.html#a11">00036</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT23 11</span>
<a name="l00037"></a><a class="code" href="PVRTMatrix_8h.html#a12">00037</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT30 12</span>
<a name="l00038"></a><a class="code" href="PVRTMatrix_8h.html#a13">00038</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT31 13</span>
<a name="l00039"></a><a class="code" href="PVRTMatrix_8h.html#a14">00039</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT32 14</span>
<a name="l00040"></a><a class="code" href="PVRTMatrix_8h.html#a15">00040</a> <span class="preprocessor"></span><span class="preprocessor">#define MAT33 15</span>
00041 <span class="preprocessor"></span>
00042 <span class="comment">/****************************************************************************</span>
00043 <span class="comment">** Typedefs</span>
00044 <span class="comment">****************************************************************************/</span>
00045 <span class="comment">/*!***************************************************************************</span>
00046 <span class="comment"> 2D floating point vector</span>
00047 <span class="comment">*****************************************************************************/</span>
<a name="l00048"></a><a class="code" href="structPVRTVECTOR2f.html">00048</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>
00049 <span class="keyword"></span>{
<a name="l00050"></a><a class="code" href="structPVRTVECTOR2f.html#o0">00050</a>     <span class="keywordtype">float</span> x;    
<a name="l00051"></a><a class="code" href="structPVRTVECTOR2f.html#o1">00051</a>     <span class="keywordtype">float</span> y;    
00052 } <a class="code" href="structPVRTVECTOR2f.html">PVRTVECTOR2f</a>;
00053 
00054 <span class="comment">/*!***************************************************************************</span>
00055 <span class="comment"> 2D fixed point vector</span>
00056 <span class="comment">*****************************************************************************/</span>
<a name="l00057"></a><a class="code" href="structPVRTVECTOR2x.html">00057</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>
00058 <span class="keyword"></span>{
<a name="l00059"></a><a class="code" href="structPVRTVECTOR2x.html#o0">00059</a>     <span class="keywordtype">int</span> x;  
<a name="l00060"></a><a class="code" href="structPVRTVECTOR2x.html#o1">00060</a>     <span class="keywordtype">int</span> y;  
00061 } <a class="code" href="structPVRTVECTOR2x.html">PVRTVECTOR2x</a>;
00062 
00063 <span class="comment">/*!***************************************************************************</span>
00064 <span class="comment"> 3D floating point vector</span>
00065 <span class="comment">*****************************************************************************/</span>
<a name="l00066"></a><a class="code" href="structPVRTVECTOR3f.html">00066</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>
00067 <span class="keyword"></span>{
<a name="l00068"></a><a class="code" href="structPVRTVECTOR3f.html#o0">00068</a>     <span class="keywordtype">float</span> x;    
<a name="l00069"></a><a class="code" href="structPVRTVECTOR3f.html#o1">00069</a>     <span class="keywordtype">float</span> y;    
<a name="l00070"></a><a class="code" href="structPVRTVECTOR3f.html#o2">00070</a>     <span class="keywordtype">float</span> z;    
00071 } <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>;
00072 
00073 <span class="comment">/*!***************************************************************************</span>
00074 <span class="comment"> 3D fixed point vector</span>
00075 <span class="comment">*****************************************************************************/</span>
<a name="l00076"></a><a class="code" href="structPVRTVECTOR3x.html">00076</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>
00077 <span class="keyword"></span>{
<a name="l00078"></a><a class="code" href="structPVRTVECTOR3x.html#o0">00078</a>     <span class="keywordtype">int</span> x;  
<a name="l00079"></a><a class="code" href="structPVRTVECTOR3x.html#o1">00079</a>     <span class="keywordtype">int</span> y;  
<a name="l00080"></a><a class="code" href="structPVRTVECTOR3x.html#o2">00080</a>     <span class="keywordtype">int</span> z;  
00081 } <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>;
00082 
00083 <span class="comment">/*!***************************************************************************</span>
00084 <span class="comment"> 4D floating point vector</span>
00085 <span class="comment">*****************************************************************************/</span>
<a name="l00086"></a><a class="code" href="structPVRTVECTOR4f.html">00086</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>
00087 <span class="keyword"></span>{
<a name="l00088"></a><a class="code" href="structPVRTVECTOR4f.html#o0">00088</a>     <span class="keywordtype">float</span> x;    
<a name="l00089"></a><a class="code" href="structPVRTVECTOR4f.html#o1">00089</a>     <span class="keywordtype">float</span> y;    
<a name="l00090"></a><a class="code" href="structPVRTVECTOR4f.html#o2">00090</a>     <span class="keywordtype">float</span> z;    
<a name="l00091"></a><a class="code" href="structPVRTVECTOR4f.html#o3">00091</a>     <span class="keywordtype">float</span> w;    
00092 } <a class="code" href="structPVRTVECTOR4f.html">PVRTVECTOR4f</a>;
00093 
00094 <span class="comment">/*!***************************************************************************</span>
00095 <span class="comment"> 4D fixed point vector</span>
00096 <span class="comment">*****************************************************************************/</span>
<a name="l00097"></a><a class="code" href="structPVRTVECTOR4x.html">00097</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>
00098 <span class="keyword"></span>{
<a name="l00099"></a><a class="code" href="structPVRTVECTOR4x.html#o0">00099</a>     <span class="keywordtype">int</span> x;  
<a name="l00100"></a><a class="code" href="structPVRTVECTOR4x.html#o1">00100</a>     <span class="keywordtype">int</span> y;  
<a name="l00101"></a><a class="code" href="structPVRTVECTOR4x.html#o2">00101</a>     <span class="keywordtype">int</span> z;  
<a name="l00102"></a><a class="code" href="structPVRTVECTOR4x.html#o3">00102</a>     <span class="keywordtype">int</span> w;  
00103 } <a class="code" href="structPVRTVECTOR4x.html">PVRTVECTOR4x</a>;
00104 
00105 <span class="comment">/*!***************************************************************************</span>
00106 <span class="comment"> 4x4 floating point matrix</span>
00107 <span class="comment">*****************************************************************************/</span>
00108 
<a name="l00109"></a><a class="code" href="classPVRTMATRIXf.html">00109</a> <span class="keyword">class </span><a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>
00110 {
00111 <span class="keyword">public</span>:
<a name="l00112"></a><a class="code" href="classPVRTMATRIXf.html#a0">00112</a>     <span class="keywordtype">float</span>* <a class="code" href="classPVRTMATRIXf.html#a0">operator [] </a>( <span class="keyword">const</span> <span class="keywordtype">int</span> Row )
00113     {
00114         <span class="keywordflow">return</span> &amp;<a class="code" href="classPVRTMATRIXf.html#o0">f</a>[Row&lt;&lt;2];
00115     }
<a name="l00116"></a><a class="code" href="classPVRTMATRIXf.html#o0">00116</a>     <span class="keywordtype">float</span> <a class="code" href="classPVRTMATRIXf.html#o0">f</a>[16];    
00117 };
00118 
00119 <span class="comment">/*!***************************************************************************</span>
00120 <span class="comment"> 4x4 fixed point matrix</span>
00121 <span class="comment">*****************************************************************************/</span>
<a name="l00122"></a><a class="code" href="classPVRTMATRIXx.html">00122</a> <span class="keyword">class </span><a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>
00123 {
00124 <span class="keyword">public</span>:
<a name="l00125"></a><a class="code" href="classPVRTMATRIXx.html#a0">00125</a>     <span class="keywordtype">int</span>* <a class="code" href="classPVRTMATRIXx.html#a0">operator [] </a>( <span class="keyword">const</span> <span class="keywordtype">int</span> Row )
00126     {
00127         <span class="keywordflow">return</span> &amp;f[Row&lt;&lt;2];
00128     }
<a name="l00129"></a><a class="code" href="classPVRTMATRIXx.html#o0">00129</a>     <span class="keywordtype">int</span> f[16];
00130 };
00131 
00132 <span class="comment">/*!***************************************************************************</span>
00133 <span class="comment"> 3x3 floating point matrix</span>
00134 <span class="comment">*****************************************************************************/</span>
00135 
<a name="l00136"></a><a class="code" href="classPVRTMATRIX3f.html">00136</a> <span class="keyword">class </span><a class="code" href="classPVRTMATRIX3f.html">PVRTMATRIX3f</a>
00137 {
00138 <span class="keyword">public</span>:
<a name="l00139"></a><a class="code" href="classPVRTMATRIX3f.html#a0">00139</a>     <span class="keywordtype">float</span>* <a class="code" href="classPVRTMATRIX3f.html#a0">operator [] </a>( <span class="keyword">const</span> <span class="keywordtype">int</span> Row )
00140     {
00141         <span class="keywordflow">return</span> &amp;f[Row*3];
00142     }
<a name="l00143"></a><a class="code" href="classPVRTMATRIX3f.html#o0">00143</a>     <span class="keywordtype">float</span> f[9]; 
00144 };
00145 
00146 <span class="comment">/*!***************************************************************************</span>
00147 <span class="comment"> 3x3 fixed point matrix</span>
00148 <span class="comment">*****************************************************************************/</span>
<a name="l00149"></a><a class="code" href="classPVRTMATRIX3x.html">00149</a> <span class="keyword">class </span><a class="code" href="classPVRTMATRIX3x.html">PVRTMATRIX3x</a>
00150 {
00151 <span class="keyword">public</span>:
<a name="l00152"></a><a class="code" href="classPVRTMATRIX3x.html#a0">00152</a>     <span class="keywordtype">int</span>* <a class="code" href="classPVRTMATRIX3x.html#a0">operator [] </a>( <span class="keyword">const</span> <span class="keywordtype">int</span> Row )
00153     {
00154         <span class="keywordflow">return</span> &amp;f[Row*3];
00155     }
<a name="l00156"></a><a class="code" href="classPVRTMATRIX3x.html#o0">00156</a>     <span class="keywordtype">int</span> f[9];
00157 };
00158 
00159 
00160 <span class="comment">/****************************************************************************</span>
00161 <span class="comment">** Float or fixed</span>
00162 <span class="comment">****************************************************************************/</span>
00163 <span class="preprocessor">#ifdef PVRT_FIXED_POINT_ENABLE</span>
00164 <span class="preprocessor"></span>    <span class="keyword">typedef</span> <a class="code" href="structPVRTVECTOR2x.html">PVRTVECTOR2x</a>        <a class="code" href="structPVRTVECTOR2f.html">PVRTVECTOR2</a>;
00165     <span class="keyword">typedef</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>        <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3</a>;
00166     <span class="keyword">typedef</span> <a class="code" href="structPVRTVECTOR4x.html">PVRTVECTOR4x</a>        <a class="code" href="structPVRTVECTOR4f.html">PVRTVECTOR4</a>;
00167     <span class="keyword">typedef</span> <a class="code" href="classPVRTMATRIX3x.html">PVRTMATRIX3x</a>        <a class="code" href="classPVRTMATRIX3f.html">PVRTMATRIX3</a>;
00168     <span class="keyword">typedef</span> <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>         <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIX</a>;
00169 <span class="preprocessor">    #define PVRTMatrixIdentity                  PVRTMatrixIdentityX</span>
00170 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixMultiply                  PVRTMatrixMultiplyX</span>
00171 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixTranslation               PVRTMatrixTranslationX</span>
00172 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixScaling                   PVRTMatrixScalingX</span>
00173 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixRotationX                 PVRTMatrixRotationXX</span>
00174 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixRotationY                 PVRTMatrixRotationYX</span>
00175 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixRotationZ                 PVRTMatrixRotationZX</span>
00176 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixTranspose                 PVRTMatrixTransposeX</span>
00177 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixInverse                   PVRTMatrixInverseX</span>
00178 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixInverseEx                 PVRTMatrixInverseExX</span>
00179 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixLookAtLH                  PVRTMatrixLookAtLHX</span>
00180 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixLookAtRH                  PVRTMatrixLookAtRHX</span>
00181 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixPerspectiveFovLH          PVRTMatrixPerspectiveFovLHX</span>
00182 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixPerspectiveFovRH          PVRTMatrixPerspectiveFovRHX</span>
00183 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixOrthoLH                   PVRTMatrixOrthoLHX</span>
00184 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixOrthoRH                   PVRTMatrixOrthoRHX</span>
00185 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixVec3Lerp                  PVRTMatrixVec3LerpX</span>
00186 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixVec3DotProduct            PVRTMatrixVec3DotProductX</span>
00187 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixVec3CrossProduct          PVRTMatrixVec3CrossProductX</span>
00188 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixVec3Normalize             PVRTMatrixVec3NormalizeX</span>
00189 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixVec3Length                PVRTMatrixVec3LengthX</span>
00190 <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixLinearEqSolve             PVRTMatrixLinearEqSolveX</span>
00191 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00192"></a><a class="code" href="PVRTMatrix_8h.html#a38">00192</a> <span class="preprocessor"></span>    <span class="keyword">typedef</span> <a class="code" href="structPVRTVECTOR2f.html">PVRTVECTOR2f</a>        <a class="code" href="PVRTMatrix_8h.html#a38">PVRTVECTOR2</a>;
<a name="l00193"></a><a class="code" href="PVRTMatrix_8h.html#a39">00193</a>     <span class="keyword">typedef</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>        <a class="code" href="PVRTMatrix_8h.html#a39">PVRTVECTOR3</a>;
<a name="l00194"></a><a class="code" href="PVRTMatrix_8h.html#a40">00194</a>     <span class="keyword">typedef</span> <a class="code" href="structPVRTVECTOR4f.html">PVRTVECTOR4f</a>        <a class="code" href="PVRTMatrix_8h.html#a40">PVRTVECTOR4</a>;
<a name="l00195"></a><a class="code" href="PVRTMatrix_8h.html#a41">00195</a>     <span class="keyword">typedef</span> <a class="code" href="classPVRTMATRIX3f.html">PVRTMATRIX3f</a>        <a class="code" href="PVRTMatrix_8h.html#a41">PVRTMATRIX3</a>;
<a name="l00196"></a><a class="code" href="PVRTMatrix_8h.html#a42">00196</a>     <span class="keyword">typedef</span> <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>         <a class="code" href="PVRTMatrix_8h.html#a42">PVRTMATRIX</a>;
<a name="l00197"></a><a class="code" href="PVRTMatrix_8h.html#a16">00197</a> <span class="preprocessor">    #define PVRTMatrixIdentity                  PVRTMatrixIdentityF</span>
<a name="l00198"></a><a class="code" href="PVRTMatrix_8h.html#a17">00198</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixMultiply                  PVRTMatrixMultiplyF</span>
<a name="l00199"></a><a class="code" href="PVRTMatrix_8h.html#a18">00199</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixTranslation               PVRTMatrixTranslationF</span>
<a name="l00200"></a><a class="code" href="PVRTMatrix_8h.html#a19">00200</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixScaling                   PVRTMatrixScalingF</span>
<a name="l00201"></a><a class="code" href="PVRTMatrix_8h.html#a20">00201</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixRotationX                 PVRTMatrixRotationXF</span>
<a name="l00202"></a><a class="code" href="PVRTMatrix_8h.html#a21">00202</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixRotationY                 PVRTMatrixRotationYF</span>
<a name="l00203"></a><a class="code" href="PVRTMatrix_8h.html#a22">00203</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixRotationZ                 PVRTMatrixRotationZF</span>
<a name="l00204"></a><a class="code" href="PVRTMatrix_8h.html#a23">00204</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixTranspose                 PVRTMatrixTransposeF</span>
<a name="l00205"></a><a class="code" href="PVRTMatrix_8h.html#a24">00205</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixInverse                   PVRTMatrixInverseF</span>
<a name="l00206"></a><a class="code" href="PVRTMatrix_8h.html#a25">00206</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixInverseEx                 PVRTMatrixInverseExF</span>
<a name="l00207"></a><a class="code" href="PVRTMatrix_8h.html#a26">00207</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixLookAtLH                  PVRTMatrixLookAtLHF</span>
<a name="l00208"></a><a class="code" href="PVRTMatrix_8h.html#a27">00208</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixLookAtRH                  PVRTMatrixLookAtRHF</span>
<a name="l00209"></a><a class="code" href="PVRTMatrix_8h.html#a28">00209</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixPerspectiveFovLH          PVRTMatrixPerspectiveFovLHF</span>
<a name="l00210"></a><a class="code" href="PVRTMatrix_8h.html#a29">00210</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixPerspectiveFovRH          PVRTMatrixPerspectiveFovRHF</span>
<a name="l00211"></a><a class="code" href="PVRTMatrix_8h.html#a30">00211</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixOrthoLH                   PVRTMatrixOrthoLHF</span>
<a name="l00212"></a><a class="code" href="PVRTMatrix_8h.html#a31">00212</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixOrthoRH                   PVRTMatrixOrthoRHF</span>
<a name="l00213"></a><a class="code" href="PVRTMatrix_8h.html#a32">00213</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixVec3Lerp                  PVRTMatrixVec3LerpF</span>
<a name="l00214"></a><a class="code" href="PVRTMatrix_8h.html#a33">00214</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixVec3DotProduct            PVRTMatrixVec3DotProductF</span>
<a name="l00215"></a><a class="code" href="PVRTMatrix_8h.html#a34">00215</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixVec3CrossProduct          PVRTMatrixVec3CrossProductF</span>
<a name="l00216"></a><a class="code" href="PVRTMatrix_8h.html#a35">00216</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixVec3Normalize             PVRTMatrixVec3NormalizeF</span>
<a name="l00217"></a><a class="code" href="PVRTMatrix_8h.html#a36">00217</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixVec3Length                PVRTMatrixVec3LengthF</span>
<a name="l00218"></a><a class="code" href="PVRTMatrix_8h.html#a37">00218</a> <span class="preprocessor"></span><span class="preprocessor">    #define PVRTMatrixLinearEqSolve             PVRTMatrixLinearEqSolveF</span>
00219 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00220 <span class="preprocessor"></span>
00221 <span class="comment">/****************************************************************************</span>
00222 <span class="comment">** Functions</span>
00223 <span class="comment">****************************************************************************/</span>
00224 
00225 <span class="comment">/*!***************************************************************************</span>
00226 <span class="comment"> @Function          PVRTMatrixIdentityF</span>
00227 <span class="comment"> @Output            mOut    Set to identity</span>
00228 <span class="comment"> @Description       Reset matrix to identity matrix.</span>
00229 <span class="comment">*****************************************************************************/</span>
00230 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a43">PVRTMatrixIdentityF</a>(<a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a> &amp;mOut);
00231 
00232 <span class="comment">/*!***************************************************************************</span>
00233 <span class="comment"> @Function          PVRTMatrixIdentityX</span>
00234 <span class="comment"> @Output            mOut    Set to identity</span>
00235 <span class="comment"> @Description       Reset matrix to identity matrix.</span>
00236 <span class="comment">*****************************************************************************/</span>
00237 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a44">PVRTMatrixIdentityX</a>(<a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a> &amp;mOut);
00238 
00239 <span class="comment">/*!***************************************************************************</span>
00240 <span class="comment"> @Function          PVRTMatrixMultiplyF</span>
00241 <span class="comment"> @Output            mOut    Result of mA x mB</span>
00242 <span class="comment"> @Input             mA      First operand</span>
00243 <span class="comment"> @Input             mB      Second operand</span>
00244 <span class="comment"> @Description       Multiply mA by mB and assign the result to mOut</span>
00245 <span class="comment">                    (mOut = p1 * p2). A copy of the result matrix is done in</span>
00246 <span class="comment">                    the function because mOut can be a parameter mA or mB.</span>
00247 <span class="comment">*****************************************************************************/</span>
00248 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a45">PVRTMatrixMultiplyF</a>(
00249     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>         &amp;mOut,
00250     <span class="keyword">const</span> <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>   &amp;mA,
00251     <span class="keyword">const</span> <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>   &amp;mB);
00252 <span class="comment">/*!***************************************************************************</span>
00253 <span class="comment"> @Function          PVRTMatrixMultiplyX</span>
00254 <span class="comment"> @Output            mOut    Result of mA x mB</span>
00255 <span class="comment"> @Input             mA      First operand</span>
00256 <span class="comment"> @Input             mB      Second operand</span>
00257 <span class="comment"> @Description       Multiply mA by mB and assign the result to mOut</span>
00258 <span class="comment">                    (mOut = p1 * p2). A copy of the result matrix is done in</span>
00259 <span class="comment">                    the function because mOut can be a parameter mA or mB.</span>
00260 <span class="comment">                    The fixed-point shift could be performed after adding</span>
00261 <span class="comment">                    all four intermediate results together however this might</span>
00262 <span class="comment">                    cause some overflow issues.</span>
00263 <span class="comment">*****************************************************************************/</span>
00264 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a46">PVRTMatrixMultiplyX</a>(
00265     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>         &amp;mOut,
00266     <span class="keyword">const</span> <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>   &amp;mA,
00267     <span class="keyword">const</span> <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>   &amp;mB);
00268 
00269 <span class="comment">/*!***************************************************************************</span>
00270 <span class="comment"> @Function Name     PVRTMatrixTranslationF</span>
00271 <span class="comment"> @Output            mOut    Translation matrix</span>
00272 <span class="comment"> @Input             fX      X component of the translation</span>
00273 <span class="comment"> @Input             fY      Y component of the translation</span>
00274 <span class="comment"> @Input             fZ      Z component of the translation</span>
00275 <span class="comment"> @Description       Build a transaltion matrix mOut using fX, fY and fZ.</span>
00276 <span class="comment">*****************************************************************************/</span>
00277 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a47">PVRTMatrixTranslationF</a>(
00278     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a> &amp;mOut,
00279     <span class="keyword">const</span> <span class="keywordtype">float</span> fX,
00280     <span class="keyword">const</span> <span class="keywordtype">float</span> fY,
00281     <span class="keyword">const</span> <span class="keywordtype">float</span> fZ);
00282 <span class="comment">/*!***************************************************************************</span>
00283 <span class="comment"> @Function Name     PVRTMatrixTranslationX</span>
00284 <span class="comment"> @Output            mOut    Translation matrix</span>
00285 <span class="comment"> @Input             fX      X component of the translation</span>
00286 <span class="comment"> @Input             fY      Y component of the translation</span>
00287 <span class="comment"> @Input             fZ      Z component of the translation</span>
00288 <span class="comment"> @Description       Build a transaltion matrix mOut using fX, fY and fZ.</span>
00289 <span class="comment">*****************************************************************************/</span>
00290 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a48">PVRTMatrixTranslationX</a>(
00291     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a> &amp;mOut,
00292     <span class="keyword">const</span> <span class="keywordtype">int</span>   fX,
00293     <span class="keyword">const</span> <span class="keywordtype">int</span>   fY,
00294     <span class="keyword">const</span> <span class="keywordtype">int</span>   fZ);
00295 
00296 <span class="comment">/*!***************************************************************************</span>
00297 <span class="comment"> @Function Name     PVRTMatrixScalingF</span>
00298 <span class="comment"> @Output            mOut    Scale matrix</span>
00299 <span class="comment"> @Input             fX      X component of the scaling</span>
00300 <span class="comment"> @Input             fY      Y component of the scaling</span>
00301 <span class="comment"> @Input             fZ      Z component of the scaling</span>
00302 <span class="comment"> @Description       Build a scale matrix mOut using fX, fY and fZ.</span>
00303 <span class="comment">*****************************************************************************/</span>
00304 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a49">PVRTMatrixScalingF</a>(
00305     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a> &amp;mOut,
00306     <span class="keyword">const</span> <span class="keywordtype">float</span> fX,
00307     <span class="keyword">const</span> <span class="keywordtype">float</span> fY,
00308     <span class="keyword">const</span> <span class="keywordtype">float</span> fZ);
00309 
00310 <span class="comment">/*!***************************************************************************</span>
00311 <span class="comment"> @Function Name     PVRTMatrixScalingX</span>
00312 <span class="comment"> @Output            mOut    Scale matrix</span>
00313 <span class="comment"> @Input             fX      X component of the scaling</span>
00314 <span class="comment"> @Input             fY      Y component of the scaling</span>
00315 <span class="comment"> @Input             fZ      Z component of the scaling</span>
00316 <span class="comment"> @Description       Build a scale matrix mOut using fX, fY and fZ.</span>
00317 <span class="comment">*****************************************************************************/</span>
00318 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a50">PVRTMatrixScalingX</a>(
00319     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a> &amp;mOut,
00320     <span class="keyword">const</span> <span class="keywordtype">int</span>   fX,
00321     <span class="keyword">const</span> <span class="keywordtype">int</span>   fY,
00322     <span class="keyword">const</span> <span class="keywordtype">int</span>   fZ);
00323 
00324 <span class="comment">/*!***************************************************************************</span>
00325 <span class="comment"> @Function Name     PVRTMatrixRotationXF</span>
00326 <span class="comment"> @Output            mOut    Rotation matrix</span>
00327 <span class="comment"> @Input             fAngle  Angle of the rotation</span>
00328 <span class="comment"> @Description       Create an X rotation matrix mOut.</span>
00329 <span class="comment">*****************************************************************************/</span>
00330 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a51">PVRTMatrixRotationXF</a>(
00331     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a> &amp;mOut,
00332     <span class="keyword">const</span> <span class="keywordtype">float</span> fAngle);
00333 
00334 <span class="comment">/*!***************************************************************************</span>
00335 <span class="comment"> @Function Name     PVRTMatrixRotationXX</span>
00336 <span class="comment"> @Output            mOut    Rotation matrix</span>
00337 <span class="comment"> @Input             fAngle  Angle of the rotation</span>
00338 <span class="comment"> @Description       Create an X rotation matrix mOut.</span>
00339 <span class="comment">*****************************************************************************/</span>
00340 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a52">PVRTMatrixRotationXX</a>(
00341     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a> &amp;mOut,
00342     <span class="keyword">const</span> <span class="keywordtype">int</span>   fAngle);
00343 
00344 <span class="comment">/*!***************************************************************************</span>
00345 <span class="comment"> @Function Name     PVRTMatrixRotationYF</span>
00346 <span class="comment"> @Output            mOut    Rotation matrix</span>
00347 <span class="comment"> @Input             fAngle  Angle of the rotation</span>
00348 <span class="comment"> @Description       Create an Y rotation matrix mOut.</span>
00349 <span class="comment">*****************************************************************************/</span>
00350 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a53">PVRTMatrixRotationYF</a>(
00351     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a> &amp;mOut,
00352     <span class="keyword">const</span> <span class="keywordtype">float</span> fAngle);
00353 
00354 <span class="comment">/*!***************************************************************************</span>
00355 <span class="comment"> @Function Name     PVRTMatrixRotationYX</span>
00356 <span class="comment"> @Output            mOut    Rotation matrix</span>
00357 <span class="comment"> @Input             fAngle  Angle of the rotation</span>
00358 <span class="comment"> @Description       Create an Y rotation matrix mOut.</span>
00359 <span class="comment">*****************************************************************************/</span>
00360 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a54">PVRTMatrixRotationYX</a>(
00361     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a> &amp;mOut,
00362     <span class="keyword">const</span> <span class="keywordtype">int</span>   fAngle);
00363 
00364 <span class="comment">/*!***************************************************************************</span>
00365 <span class="comment"> @Function Name     PVRTMatrixRotationZF</span>
00366 <span class="comment"> @Output            mOut    Rotation matrix</span>
00367 <span class="comment"> @Input             fAngle  Angle of the rotation</span>
00368 <span class="comment"> @Description       Create an Z rotation matrix mOut.</span>
00369 <span class="comment">*****************************************************************************/</span>
00370 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a55">PVRTMatrixRotationZF</a>(
00371     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a> &amp;mOut,
00372     <span class="keyword">const</span> <span class="keywordtype">float</span> fAngle);
00373 <span class="comment">/*!***************************************************************************</span>
00374 <span class="comment"> @Function Name     PVRTMatrixRotationZX</span>
00375 <span class="comment"> @Output            mOut    Rotation matrix</span>
00376 <span class="comment"> @Input             fAngle  Angle of the rotation</span>
00377 <span class="comment"> @Description       Create an Z rotation matrix mOut.</span>
00378 <span class="comment">*****************************************************************************/</span>
00379 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a56">PVRTMatrixRotationZX</a>(
00380     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a> &amp;mOut,
00381     <span class="keyword">const</span> <span class="keywordtype">int</span>   fAngle);
00382 
00383 <span class="comment">/*!***************************************************************************</span>
00384 <span class="comment"> @Function Name     PVRTMatrixTransposeF</span>
00385 <span class="comment"> @Output            mOut    Transposed matrix</span>
00386 <span class="comment"> @Input             mIn     Original matrix</span>
00387 <span class="comment"> @Description       Compute the transpose matrix of mIn.</span>
00388 <span class="comment">*****************************************************************************/</span>
00389 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a57">PVRTMatrixTransposeF</a>(
00390     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>         &amp;mOut,
00391     <span class="keyword">const</span> <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>   &amp;mIn);
00392 <span class="comment">/*!***************************************************************************</span>
00393 <span class="comment"> @Function Name     PVRTMatrixTransposeX</span>
00394 <span class="comment"> @Output            mOut    Transposed matrix</span>
00395 <span class="comment"> @Input             mIn     Original matrix</span>
00396 <span class="comment"> @Description       Compute the transpose matrix of mIn.</span>
00397 <span class="comment">*****************************************************************************/</span>
00398 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a58">PVRTMatrixTransposeX</a>(
00399     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>         &amp;mOut,
00400     <span class="keyword">const</span> <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>   &amp;mIn);
00401 
00402 <span class="comment">/*!***************************************************************************</span>
00403 <span class="comment"> @Function          PVRTMatrixInverseF</span>
00404 <span class="comment"> @Output            mOut    Inversed matrix</span>
00405 <span class="comment"> @Input             mIn     Original matrix</span>
00406 <span class="comment"> @Description       Compute the inverse matrix of mIn.</span>
00407 <span class="comment">                    The matrix must be of the form :</span>
00408 <span class="comment">                    A 0</span>
00409 <span class="comment">                    C 1</span>
00410 <span class="comment">                    Where A is a 3x3 matrix and C is a 1x3 matrix.</span>
00411 <span class="comment">*****************************************************************************/</span>
00412 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a59">PVRTMatrixInverseF</a>(
00413     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>         &amp;mOut,
00414     <span class="keyword">const</span> <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>   &amp;mIn);
00415 <span class="comment">/*!***************************************************************************</span>
00416 <span class="comment"> @Function          PVRTMatrixInverseX</span>
00417 <span class="comment"> @Output            mOut    Inversed matrix</span>
00418 <span class="comment"> @Input             mIn     Original matrix</span>
00419 <span class="comment"> @Description       Compute the inverse matrix of mIn.</span>
00420 <span class="comment">                    The matrix must be of the form :</span>
00421 <span class="comment">                    A 0</span>
00422 <span class="comment">                    C 1</span>
00423 <span class="comment">                    Where A is a 3x3 matrix and C is a 1x3 matrix.</span>
00424 <span class="comment">*****************************************************************************/</span>
00425 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a60">PVRTMatrixInverseX</a>(
00426     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>         &amp;mOut,
00427     <span class="keyword">const</span> <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>   &amp;mIn);
00428 
00429 <span class="comment">/*!***************************************************************************</span>
00430 <span class="comment"> @Function          PVRTMatrixInverseExF</span>
00431 <span class="comment"> @Output            mOut    Inversed matrix</span>
00432 <span class="comment"> @Input             mIn     Original matrix</span>
00433 <span class="comment"> @Description       Compute the inverse matrix of mIn.</span>
00434 <span class="comment">                    Uses a linear equation solver and the knowledge that M.M^-1=I.</span>
00435 <span class="comment">                    Use this fn to calculate the inverse of matrices that</span>
00436 <span class="comment">                    PVRTMatrixInverse() cannot.</span>
00437 <span class="comment">*****************************************************************************/</span>
00438 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a61">PVRTMatrixInverseExF</a>(
00439     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>         &amp;mOut,
00440     <span class="keyword">const</span> <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>   &amp;mIn);
00441 <span class="comment">/*!***************************************************************************</span>
00442 <span class="comment"> @Function          PVRTMatrixInverseExX</span>
00443 <span class="comment"> @Output            mOut    Inversed matrix</span>
00444 <span class="comment"> @Input             mIn     Original matrix</span>
00445 <span class="comment"> @Description       Compute the inverse matrix of mIn.</span>
00446 <span class="comment">                    Uses a linear equation solver and the knowledge that M.M^-1=I.</span>
00447 <span class="comment">                    Use this fn to calculate the inverse of matrices that</span>
00448 <span class="comment">                    PVRTMatrixInverse() cannot.</span>
00449 <span class="comment">*****************************************************************************/</span>
00450 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a62">PVRTMatrixInverseExX</a>(
00451     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>         &amp;mOut,
00452     <span class="keyword">const</span> <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>   &amp;mIn);
00453 
00454 <span class="comment">/*!***************************************************************************</span>
00455 <span class="comment"> @Function          PVRTMatrixLookAtLHF</span>
00456 <span class="comment"> @Output            mOut    Look-at view matrix</span>
00457 <span class="comment"> @Input             vEye    Position of the camera</span>
00458 <span class="comment"> @Input             vAt     Point the camera is looking at</span>
00459 <span class="comment"> @Input             vUp     Up direction for the camera</span>
00460 <span class="comment"> @Description       Create a look-at view matrix.</span>
00461 <span class="comment">*****************************************************************************/</span>
00462 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a63">PVRTMatrixLookAtLHF</a>(
00463     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>         &amp;mOut,
00464     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;vEye,
00465     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;vAt,
00466     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;vUp);
00467 <span class="comment">/*!***************************************************************************</span>
00468 <span class="comment"> @Function          PVRTMatrixLookAtLHX</span>
00469 <span class="comment"> @Output            mOut    Look-at view matrix</span>
00470 <span class="comment"> @Input             vEye    Position of the camera</span>
00471 <span class="comment"> @Input             vAt     Point the camera is looking at</span>
00472 <span class="comment"> @Input             vUp     Up direction for the camera</span>
00473 <span class="comment"> @Description       Create a look-at view matrix.</span>
00474 <span class="comment">*****************************************************************************/</span>
00475 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a64">PVRTMatrixLookAtLHX</a>(
00476     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>         &amp;mOut,
00477     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;vEye,
00478     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;vAt,
00479     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;vUp);
00480 
00481 <span class="comment">/*!***************************************************************************</span>
00482 <span class="comment"> @Function          PVRTMatrixLookAtRHF</span>
00483 <span class="comment"> @Output            mOut    Look-at view matrix</span>
00484 <span class="comment"> @Input             vEye    Position of the camera</span>
00485 <span class="comment"> @Input             vAt     Point the camera is looking at</span>
00486 <span class="comment"> @Input             vUp     Up direction for the camera</span>
00487 <span class="comment"> @Description       Create a look-at view matrix.</span>
00488 <span class="comment">*****************************************************************************/</span>
00489 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a65">PVRTMatrixLookAtRHF</a>(
00490     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a>         &amp;mOut,
00491     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;vEye,
00492     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;vAt,
00493     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;vUp);
00494 <span class="comment">/*!***************************************************************************</span>
00495 <span class="comment"> @Function          PVRTMatrixLookAtRHX</span>
00496 <span class="comment"> @Output            mOut    Look-at view matrix</span>
00497 <span class="comment"> @Input             vEye    Position of the camera</span>
00498 <span class="comment"> @Input             vAt     Point the camera is looking at</span>
00499 <span class="comment"> @Input             vUp     Up direction for the camera</span>
00500 <span class="comment"> @Description       Create a look-at view matrix.</span>
00501 <span class="comment">*****************************************************************************/</span>
00502 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a66">PVRTMatrixLookAtRHX</a>(
00503     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a>         &amp;mOut,
00504     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;vEye,
00505     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;vAt,
00506     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;vUp);
00507 
00508 <span class="comment">/*!***************************************************************************</span>
00509 <span class="comment"> @Function      PVRTMatrixPerspectiveFovLHF</span>
00510 <span class="comment"> @Output        mOut        Perspective matrix</span>
00511 <span class="comment"> @Input         fFOVy       Field of view</span>
00512 <span class="comment"> @Input         fAspect     Aspect ratio</span>
00513 <span class="comment"> @Input         fNear       Near clipping distance</span>
00514 <span class="comment"> @Input         fFar        Far clipping distance</span>
00515 <span class="comment"> @Input         bRotate     Should we rotate it ? (for upright screens)</span>
00516 <span class="comment"> @Description   Create a perspective matrix.</span>
00517 <span class="comment">*****************************************************************************/</span>
00518 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a67">PVRTMatrixPerspectiveFovLHF</a>(
00519     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a> &amp;mOut,
00520     <span class="keyword">const</span> <span class="keywordtype">float</span> fFOVy,
00521     <span class="keyword">const</span> <span class="keywordtype">float</span> fAspect,
00522     <span class="keyword">const</span> <span class="keywordtype">float</span> fNear,
00523     <span class="keyword">const</span> <span class="keywordtype">float</span> fFar,
00524     <span class="keyword">const</span> <span class="keywordtype">bool</span>  bRotate = <span class="keyword">false</span>);
00525 <span class="comment">/*!***************************************************************************</span>
00526 <span class="comment"> @Function      PVRTMatrixPerspectiveFovLHX</span>
00527 <span class="comment"> @Output        mOut        Perspective matrix</span>
00528 <span class="comment"> @Input         fFOVy       Field of view</span>
00529 <span class="comment"> @Input         fAspect     Aspect ratio</span>
00530 <span class="comment"> @Input         fNear       Near clipping distance</span>
00531 <span class="comment"> @Input         fFar        Far clipping distance</span>
00532 <span class="comment"> @Input         bRotate     Should we rotate it ? (for upright screens)</span>
00533 <span class="comment"> @Description   Create a perspective matrix.</span>
00534 <span class="comment">*****************************************************************************/</span>
00535 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a68">PVRTMatrixPerspectiveFovLHX</a>(
00536     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a> &amp;mOut,
00537     <span class="keyword">const</span> <span class="keywordtype">int</span>   fFOVy,
00538     <span class="keyword">const</span> <span class="keywordtype">int</span>   fAspect,
00539     <span class="keyword">const</span> <span class="keywordtype">int</span>   fNear,
00540     <span class="keyword">const</span> <span class="keywordtype">int</span>   fFar,
00541     <span class="keyword">const</span> <span class="keywordtype">bool</span>  bRotate = <span class="keyword">false</span>);
00542 
00543 <span class="comment">/*!***************************************************************************</span>
00544 <span class="comment"> @Function      PVRTMatrixPerspectiveFovRHF</span>
00545 <span class="comment"> @Output        mOut        Perspective matrix</span>
00546 <span class="comment"> @Input         fFOVy       Field of view</span>
00547 <span class="comment"> @Input         fAspect     Aspect ratio</span>
00548 <span class="comment"> @Input         fNear       Near clipping distance</span>
00549 <span class="comment"> @Input         fFar        Far clipping distance</span>
00550 <span class="comment"> @Input         bRotate     Should we rotate it ? (for upright screens)</span>
00551 <span class="comment"> @Description   Create a perspective matrix.</span>
00552 <span class="comment">*****************************************************************************/</span>
00553 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a69">PVRTMatrixPerspectiveFovRHF</a>(
00554     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a> &amp;mOut,
00555     <span class="keyword">const</span> <span class="keywordtype">float</span> fFOVy,
00556     <span class="keyword">const</span> <span class="keywordtype">float</span> fAspect,
00557     <span class="keyword">const</span> <span class="keywordtype">float</span> fNear,
00558     <span class="keyword">const</span> <span class="keywordtype">float</span> fFar,
00559     <span class="keyword">const</span> <span class="keywordtype">bool</span>  bRotate = <span class="keyword">false</span>);
00560 <span class="comment">/*!***************************************************************************</span>
00561 <span class="comment"> @Function      PVRTMatrixPerspectiveFovRHX</span>
00562 <span class="comment"> @Output        mOut        Perspective matrix</span>
00563 <span class="comment"> @Input         fFOVy       Field of view</span>
00564 <span class="comment"> @Input         fAspect     Aspect ratio</span>
00565 <span class="comment"> @Input         fNear       Near clipping distance</span>
00566 <span class="comment"> @Input         fFar        Far clipping distance</span>
00567 <span class="comment"> @Input         bRotate     Should we rotate it ? (for upright screens)</span>
00568 <span class="comment"> @Description   Create a perspective matrix.</span>
00569 <span class="comment">*****************************************************************************/</span>
00570 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a70">PVRTMatrixPerspectiveFovRHX</a>(
00571     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a> &amp;mOut,
00572     <span class="keyword">const</span> <span class="keywordtype">int</span>   fFOVy,
00573     <span class="keyword">const</span> <span class="keywordtype">int</span>   fAspect,
00574     <span class="keyword">const</span> <span class="keywordtype">int</span>   fNear,
00575     <span class="keyword">const</span> <span class="keywordtype">int</span>   fFar,
00576     <span class="keyword">const</span> <span class="keywordtype">bool</span>  bRotate = <span class="keyword">false</span>);
00577 
00578 <span class="comment">/*!***************************************************************************</span>
00579 <span class="comment"> @Function      PVRTMatrixOrthoLHF</span>
00580 <span class="comment"> @Output        mOut        Orthographic matrix</span>
00581 <span class="comment"> @Input         w           Width of the screen</span>
00582 <span class="comment"> @Input         h           Height of the screen</span>
00583 <span class="comment"> @Input         zn          Near clipping distance</span>
00584 <span class="comment"> @Input         zf          Far clipping distance</span>
00585 <span class="comment"> @Input         bRotate     Should we rotate it ? (for upright screens)</span>
00586 <span class="comment"> @Description   Create an orthographic matrix.</span>
00587 <span class="comment">*****************************************************************************/</span>
00588 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a71">PVRTMatrixOrthoLHF</a>(
00589     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a> &amp;mOut,
00590     <span class="keyword">const</span> <span class="keywordtype">float</span> w,
00591     <span class="keyword">const</span> <span class="keywordtype">float</span> h,
00592     <span class="keyword">const</span> <span class="keywordtype">float</span> zn,
00593     <span class="keyword">const</span> <span class="keywordtype">float</span> zf,
00594     <span class="keyword">const</span> <span class="keywordtype">bool</span>  bRotate = <span class="keyword">false</span>);
00595 <span class="comment">/*!***************************************************************************</span>
00596 <span class="comment"> @Function      PVRTMatrixOrthoLHX</span>
00597 <span class="comment"> @Output        mOut        Orthographic matrix</span>
00598 <span class="comment"> @Input         w           Width of the screen</span>
00599 <span class="comment"> @Input         h           Height of the screen</span>
00600 <span class="comment"> @Input         zn          Near clipping distance</span>
00601 <span class="comment"> @Input         zf          Far clipping distance</span>
00602 <span class="comment"> @Input         bRotate     Should we rotate it ? (for upright screens)</span>
00603 <span class="comment"> @Description   Create an orthographic matrix.</span>
00604 <span class="comment">*****************************************************************************/</span>
00605 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a72">PVRTMatrixOrthoLHX</a>(
00606     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a> &amp;mOut,
00607     <span class="keyword">const</span> <span class="keywordtype">int</span>   w,
00608     <span class="keyword">const</span> <span class="keywordtype">int</span>   h,
00609     <span class="keyword">const</span> <span class="keywordtype">int</span>   zn,
00610     <span class="keyword">const</span> <span class="keywordtype">int</span>   zf,
00611     <span class="keyword">const</span> <span class="keywordtype">bool</span>  bRotate = <span class="keyword">false</span>);
00612 
00613 <span class="comment">/*!***************************************************************************</span>
00614 <span class="comment"> @Function      PVRTMatrixOrthoRHF</span>
00615 <span class="comment"> @Output        mOut        Orthographic matrix</span>
00616 <span class="comment"> @Input         w           Width of the screen</span>
00617 <span class="comment"> @Input         h           Height of the screen</span>
00618 <span class="comment"> @Input         zn          Near clipping distance</span>
00619 <span class="comment"> @Input         zf          Far clipping distance</span>
00620 <span class="comment"> @Input         bRotate     Should we rotate it ? (for upright screens)</span>
00621 <span class="comment"> @Description   Create an orthographic matrix.</span>
00622 <span class="comment">*****************************************************************************/</span>
00623 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a73">PVRTMatrixOrthoRHF</a>(
00624     <a class="code" href="classPVRTMATRIXf.html">PVRTMATRIXf</a> &amp;mOut,
00625     <span class="keyword">const</span> <span class="keywordtype">float</span> w,
00626     <span class="keyword">const</span> <span class="keywordtype">float</span> h,
00627     <span class="keyword">const</span> <span class="keywordtype">float</span> zn,
00628     <span class="keyword">const</span> <span class="keywordtype">float</span> zf,
00629     <span class="keyword">const</span> <span class="keywordtype">bool</span>  bRotate = <span class="keyword">false</span>);
00630 <span class="comment">/*!***************************************************************************</span>
00631 <span class="comment"> @Function      PVRTMatrixOrthoRHX</span>
00632 <span class="comment"> @Output        mOut        Orthographic matrix</span>
00633 <span class="comment"> @Input         w           Width of the screen</span>
00634 <span class="comment"> @Input         h           Height of the screen</span>
00635 <span class="comment"> @Input         zn          Near clipping distance</span>
00636 <span class="comment"> @Input         zf          Far clipping distance</span>
00637 <span class="comment"> @Input         bRotate     Should we rotate it ? (for upright screens)</span>
00638 <span class="comment"> @Description   Create an orthographic matrix.</span>
00639 <span class="comment">*****************************************************************************/</span>
00640 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a74">PVRTMatrixOrthoRHX</a>(
00641     <a class="code" href="classPVRTMATRIXx.html">PVRTMATRIXx</a> &amp;mOut,
00642     <span class="keyword">const</span> <span class="keywordtype">int</span>   w,
00643     <span class="keyword">const</span> <span class="keywordtype">int</span>   h,
00644     <span class="keyword">const</span> <span class="keywordtype">int</span>   zn,
00645     <span class="keyword">const</span> <span class="keywordtype">int</span>   zf,
00646     <span class="keyword">const</span> <span class="keywordtype">bool</span>  bRotate = <span class="keyword">false</span>);
00647 
00648 <span class="comment">/*!***************************************************************************</span>
00649 <span class="comment"> @Function          PVRTMatrixVec3LerpF</span>
00650 <span class="comment"> @Output            vOut    Result of the interpolation</span>
00651 <span class="comment"> @Input             v1      First vector to interpolate from</span>
00652 <span class="comment"> @Input             v2      Second vector to interpolate form</span>
00653 <span class="comment"> @Input             s       Coefficient of interpolation</span>
00654 <span class="comment"> @Description       This function performs the linear interpolation based on</span>
00655 <span class="comment">                    the following formula: V1 + s(V2-V1).</span>
00656 <span class="comment">*****************************************************************************/</span>
00657 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a75">PVRTMatrixVec3LerpF</a>(
00658     <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>        &amp;vOut,
00659     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;v1,
00660     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;v2,
00661     <span class="keyword">const</span> <span class="keywordtype">float</span>         s);
00662 <span class="comment">/*!***************************************************************************</span>
00663 <span class="comment"> @Function          PVRTMatrixVec3LerpX</span>
00664 <span class="comment"> @Output            vOut    Result of the interpolation</span>
00665 <span class="comment"> @Input             v1      First vector to interpolate from</span>
00666 <span class="comment"> @Input             v2      Second vector to interpolate form</span>
00667 <span class="comment"> @Input             s       Coefficient of interpolation</span>
00668 <span class="comment"> @Description       This function performs the linear interpolation based on</span>
00669 <span class="comment">                    the following formula: V1 + s(V2-V1).</span>
00670 <span class="comment">*****************************************************************************/</span>
00671 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a76">PVRTMatrixVec3LerpX</a>(
00672     <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>        &amp;vOut,
00673     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;v1,
00674     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;v2,
00675     <span class="keyword">const</span> <span class="keywordtype">int</span>           s);
00676 
00677 <span class="comment">/*!***************************************************************************</span>
00678 <span class="comment"> @Function          PVRTMatrixVec3DotProductF</span>
00679 <span class="comment"> @Input             v1      First vector</span>
00680 <span class="comment"> @Input             v2      Second vector</span>
00681 <span class="comment"> @Return            Dot product of the two vectors.</span>
00682 <span class="comment"> @Description       This function performs the dot product of the two</span>
00683 <span class="comment">                    supplied vectors.</span>
00684 <span class="comment">*****************************************************************************/</span>
00685 <span class="keywordtype">float</span> <a class="code" href="PVRTMatrix_8h.html#a77">PVRTMatrixVec3DotProductF</a>(
00686     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;v1,
00687     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;v2);
00688 <span class="comment">/*!***************************************************************************</span>
00689 <span class="comment"> @Function          PVRTMatrixVec3DotProductX</span>
00690 <span class="comment"> @Input             v1      First vector</span>
00691 <span class="comment"> @Input             v2      Second vector</span>
00692 <span class="comment"> @Return            Dot product of the two vectors.</span>
00693 <span class="comment"> @Description       This function performs the dot product of the two</span>
00694 <span class="comment">                    supplied vectors.</span>
00695 <span class="comment">                    A single &gt;&gt; 16 shift could be applied to the final accumulated</span>
00696 <span class="comment">                    result however this runs the risk of overflow between the</span>
00697 <span class="comment">                    results of the intermediate additions.</span>
00698 <span class="comment">*****************************************************************************/</span>
00699 <span class="keywordtype">int</span> <a class="code" href="PVRTMatrix_8h.html#a78">PVRTMatrixVec3DotProductX</a>(
00700     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;v1,
00701     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;v2);
00702 
00703 <span class="comment">/*!***************************************************************************</span>
00704 <span class="comment"> @Function          PVRTMatrixVec3CrossProductF</span>
00705 <span class="comment"> @Output            vOut    Cross product of the two vectors</span>
00706 <span class="comment"> @Input             v1      First vector</span>
00707 <span class="comment"> @Input             v2      Second vector</span>
00708 <span class="comment"> @Description       This function performs the cross product of the two</span>
00709 <span class="comment">                    supplied vectors.</span>
00710 <span class="comment">*****************************************************************************/</span>
00711 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a79">PVRTMatrixVec3CrossProductF</a>(
00712     <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>        &amp;vOut,
00713     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;v1,
00714     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;v2);
00715 <span class="comment">/*!***************************************************************************</span>
00716 <span class="comment"> @Function          PVRTMatrixVec3CrossProductX</span>
00717 <span class="comment"> @Output            vOut    Cross product of the two vectors</span>
00718 <span class="comment"> @Input             v1      First vector</span>
00719 <span class="comment"> @Input             v2      Second vector</span>
00720 <span class="comment"> @Description       This function performs the cross product of the two</span>
00721 <span class="comment">                    supplied vectors.</span>
00722 <span class="comment">*****************************************************************************/</span>
00723 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a80">PVRTMatrixVec3CrossProductX</a>(
00724     <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>        &amp;vOut,
00725     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;v1,
00726     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;v2);
00727 
00728 <span class="comment">/*!***************************************************************************</span>
00729 <span class="comment"> @Function          PVRTMatrixVec3NormalizeF</span>
00730 <span class="comment"> @Output            vOut    Normalized vector</span>
00731 <span class="comment"> @Input             vIn     Vector to normalize</span>
00732 <span class="comment"> @Description       Normalizes the supplied vector.</span>
00733 <span class="comment">*****************************************************************************/</span>
00734 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a81">PVRTMatrixVec3NormalizeF</a>(
00735     <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>        &amp;vOut,
00736     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;vIn);
00737 <span class="comment">/*!***************************************************************************</span>
00738 <span class="comment"> @Function          PVRTMatrixVec3NormalizeX</span>
00739 <span class="comment"> @Output            vOut    Normalized vector</span>
00740 <span class="comment"> @Input             vIn     Vector to normalize</span>
00741 <span class="comment"> @Description       Normalizes the supplied vector.</span>
00742 <span class="comment">                    The square root function is currently still performed</span>
00743 <span class="comment">                    in floating-point.</span>
00744 <span class="comment">                    Original vector is scaled down prior to be normalized in</span>
00745 <span class="comment">                    order to avoid overflow issues.</span>
00746 <span class="comment">*****************************************************************************/</span>
00747 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a82">PVRTMatrixVec3NormalizeX</a>(
00748     <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>        &amp;vOut,
00749     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;vIn);
00750 <span class="comment">/*!***************************************************************************</span>
00751 <span class="comment"> @Function          PVRTMatrixVec3LengthF</span>
00752 <span class="comment"> @Input             vIn     Vector to get the length of</span>
00753 <span class="comment"> @Return            The length of the vector</span>
00754 <span class="comment">  @Description      Gets the length of the supplied vector.</span>
00755 <span class="comment">*****************************************************************************/</span>
00756 <span class="keywordtype">float</span> <a class="code" href="PVRTMatrix_8h.html#a83">PVRTMatrixVec3LengthF</a>(
00757     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3f.html">PVRTVECTOR3f</a>  &amp;vIn);
00758 <span class="comment">/*!***************************************************************************</span>
00759 <span class="comment"> @Function          PVRTMatrixVec3LengthX</span>
00760 <span class="comment"> @Input             vIn     Vector to get the length of</span>
00761 <span class="comment"> @Return            The length of the vector</span>
00762 <span class="comment"> @Description       Gets the length of the supplied vector</span>
00763 <span class="comment">*****************************************************************************/</span>
00764 <span class="keywordtype">int</span> <a class="code" href="PVRTMatrix_8h.html#a84">PVRTMatrixVec3LengthX</a>(
00765     <span class="keyword">const</span> <a class="code" href="structPVRTVECTOR3x.html">PVRTVECTOR3x</a>  &amp;vIn);
00766 <span class="comment">/*!***************************************************************************</span>
00767 <span class="comment"> @Function          PVRTMatrixLinearEqSolveF</span>
00768 <span class="comment"> @Input             pSrc    2D array of floats. 4 Eq linear problem is 5x4</span>
00769 <span class="comment">                            matrix, constants in first column</span>
00770 <span class="comment"> @Input             nCnt    Number of equations to solve</span>
00771 <span class="comment"> @Output            pRes    Result</span>
00772 <span class="comment"> @Description       Solves 'nCnt' simultaneous equations of 'nCnt' variables.</span>
00773 <span class="comment">                    pRes should be an array large enough to contain the</span>
00774 <span class="comment">                    results: the values of the 'nCnt' variables.</span>
00775 <span class="comment">                    This fn recursively uses Gaussian Elimination.</span>
00776 <span class="comment">*****************************************************************************/</span>
00777 
00778 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a85">PVRTMatrixLinearEqSolveF</a>(
00779     <span class="keywordtype">float</span>       * <span class="keyword">const</span> pRes,
00780     <span class="keywordtype">float</span>       ** <span class="keyword">const</span> pSrc,
00781     <span class="keyword">const</span> <span class="keywordtype">int</span>   nCnt);
00782 <span class="comment">/*!***************************************************************************</span>
00783 <span class="comment"> @Function          PVRTMatrixLinearEqSolveX</span>
00784 <span class="comment"> @Input             pSrc    2D array of floats. 4 Eq linear problem is 5x4</span>
00785 <span class="comment">                            matrix, constants in first column</span>
00786 <span class="comment"> @Input             nCnt    Number of equations to solve</span>
00787 <span class="comment"> @Output            pRes    Result</span>
00788 <span class="comment"> @Description       Solves 'nCnt' simultaneous equations of 'nCnt' variables.</span>
00789 <span class="comment">                    pRes should be an array large enough to contain the</span>
00790 <span class="comment">                    results: the values of the 'nCnt' variables.</span>
00791 <span class="comment">                    This fn recursively uses Gaussian Elimination.</span>
00792 <span class="comment">*****************************************************************************/</span>
00793 <span class="keywordtype">void</span> <a class="code" href="PVRTMatrix_8h.html#a86">PVRTMatrixLinearEqSolveX</a>(
00794     <span class="keywordtype">int</span>         * <span class="keyword">const</span> pRes,
00795     <span class="keywordtype">int</span>         ** <span class="keyword">const</span> pSrc,
00796     <span class="keyword">const</span> <span class="keywordtype">int</span>   nCnt);
00797 
00798 <span class="preprocessor">#endif</span>
00799 <span class="preprocessor"></span>
00800 <span class="comment">/*****************************************************************************</span>
00801 <span class="comment"> End of file (PVRTMatrix.h)</span>
00802 <span class="comment">*****************************************************************************/</span>
00803 
</pre></div><br>
<br>
<P align=left><FONT size=2><STRONG><A 
   href="http://www.imgtec.com/powervr/insider/legal/index.asp">Copyright</A> � 
   1999-2008, Imagination Technologies Ltd.</STRONG></FONT></P>
<hr>
<address style="align: left;"><small><FONT color=f0f>
Generated by <a href="http://www.doxygen.org/index.html">DOXYGEN</a> 1.3.6</small></address>
</body>
</html>
